【iOSDC Japan 2024 レポート】Day0「新OSの機能を古いOSにバックポートするための仕組み」を聞いてきた #iosdc

【iOSDC Japan 2024 レポート】Day0「新OSの機能を古いOSにバックポートするための仕組み」を聞いてきた #iosdc

Clock Icon2024.08.22

2024年8月22日から24日に開催された「iOSDC Japan 2024」に参加してきた。WWDCが世界的なカンファレンスであるとすれば、iOSDC Japanは日本国内での最大のiOSデベロッパーカンファレンスだ。

この記事では、Day0「新OSの機能を古いOSにバックポートするための仕組み」についての感想を共有する。

新OSの機能を古いOSにバックポートする

https://fortee.jp/iosdc-japan-2024/proposal/f30647c8-dd78-4853-8718-7bcb856b1239

登壇者

  • Mike Apurin さん

スライド

https://speakerdeck.com/auramagi/iosdc-2024

概要

毎年新しい機能が発表されますが、実際のプロジェクトでは古いOSをサポートしなければならない都合でこれらの機能をすぐに採用することが難しいことが多いです。そこで、導入したい新しい機能を古いOSにバックポートしてすぐに使えるようにする方法について説明します。

  • Apple純正のバックポート
    • @_backDeployでバックポートされる機能
    • ライブラリのインターフェイスでバックポートされる機能
  • OSSとして提供されているバックポート
    • SwiftUIの機能、Observability、その他の実例
  • 自分でバックポートを実装する
    • どういう機能がバックポートに向いているか
    • 実装範囲の決め方

このセッションでは、新しいOSの機能を古いOSで利用できるようにする「バックポート」の仕組みについて詳しく解説されていた。

過去にprivate APIで提供されていた機能が、バックポートによってpublicとして利用できるようになる点や、Apple純正の方法からOSSを利用する手法、自分でバックポートを実装する際のポイントまで、幅広くカバーされていた。

こう思った

私はiOS 13.0の時代からSwiftUIを使ってアプリ開発を行ってきた。当時はLazyVStackScrollViewReaderなどの機能が、iOSのバージョンによっては使えず、自前でバックポートする必要があったことを覚えている。

このセッションで紹介されていた @backDeployed という機能は知らなかったが、どうやらSwift 5.8から追加されていたようだ。

https://github.com/swiftlang/swift-evolution/blob/main/proposals/0376-function-back-deployment.md

最近ではSwiftUIも成熟してきており、バックポートしてまで新しいAPIを使う機会は減っているが、いざという時のために@backDeployedの存在を知っておくのは有益だと感じた。

iOS 18からは #Previewマクロ内で@Previewable @Stateといった状態を管理できることを知り、非常に嬉しかった。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.